It is common for users to use a plurality of computers. A single user may use a desktop computer at his place of employment, a second desktop computer at his residence, and a laptop computer when he is traveling. Sometimes, he may even use all three of these computers in the span of a single day.
Where the user changes an application's settings—such as the preferred font or dictionary for a word processor—on one computer he may wish or expect to have those changes applied to his application on each computer that he uses. Where these changes are not applied across the computers he uses, the user experienced is diminished because of both inconsistent application settings between computers, and the required time and effort to manually implement the changes on each computer.
One scenario where this occurs is where a user is running a particular word processor on a desktop computer and creates a new style. The user expects that new style to be present on his laptop when he leaves for a business trip with the laptop. Further, when the user is on that business trip, he changes a font setting in the word processor, and expects that to be present when he uses the application on his desktop computer.
Another scenario where this occurs is where the user is running a word processor on his desktop computer. Further, he is running an email program through a remote presentation session (such as REMOTE DESKTOP SESSION® or virtual desktop infrastructure), the email program using a different instance of that word processor (one executed on the remote presentation session server along with the email program) to edit documents. Where the user creates a new style for the word processor executed on the desktop computer, he may expect that it also exists for the word processor associated with the email program that he is using, and vice versa.
The problem exists both for where a user only logs in locally to computers, but is more pronounced when remote presentation sessions are involved. It is common for a remote presentation server to be part of a server farm—a plurality of servers configured to conduct remote presentation sessions, and assigned to remote presentation sessions by a load balancer that routes incoming connections to an available server based on which server has the most available processing resources.
So, a user may log onto a first remote presentation session server and makes some changes to application settings, then logs off. He may log back on to a remote presentation session of the very same server farm, but be assigned to a second remote presentation session server by the load balancer, and it may be that the changes he made to the application settings are either not reflected in this second session, or only partially reflected in this second session.
There do exist techniques for roaming profiles, but these pre-existing roaming profile techniques have significant limitations. Among other limitations, first, these roaming profiles are roamed only on a per-user basis, and lack the granularity to roam individual applications of a user's profile (referred to as “per-user, per-application” roaming in the detailed description). Second, this per-user roaming lacks granularity even at the user level. So, if a user updates different parts of his profile on different computers, whichever computer roams the user profile last will overwrite all changes made to the profile on the other computer.